#ifndef _QM_H
#define _QM_H

typedef int Geom_t ;
typedef int Basis_t;

//geom
int Geom_create(Geom_t *geom);
int Geom_free(Geom_t geom);
int Geom_add(Geom_t geom, double *cart, double nuc_charge,
	     const char *symbol, const char *name, int *index);
int Geom_get_cart(Geom_t geom, int index, double *cart);
int Geom_size(Geom_t geom);

//basis
int Basis_create(Basis_t *basis);
int Basis_free(Basis_t basis);
int Basis_set_geom(Basis_t basis, Geom_t geom);
int Basis_get_geom(Basis_t basis, Geom_t *geom);
int Basis_add_contr(Basis_t basis, int K, double *a, int KC, double **C, int *contr);
int Basis_add_shell(Basis_t basis, int type, int contr, int center, int *shell);
int Basis_add_func(Basis_t basis, int shell, int ftype, int *func);
int Basis_index(Basis_t basis, int flags, int *index);
int Basis_sort(Basis_t basis, int flags);

#endif //_QM_H
